package cn.edu.hbpu.entity.sys;


import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

/**
 * @author lcy
 * @date 2022/8/12 13:17
 * @description
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
@TableName("sys_user")
public class SysUser {
    /**
     * 系统用户id
     */
    @TableId
    @JsonProperty("sysUserId")
    private String sysUserId;

    /**
     * 用户名
     */
    @JsonProperty("userName")
    private String userName;

    /**
     * 昵称
     */
    @JsonProperty("nickName")
    private String nickName;

    /**
     * 密码
     */
    @JsonProperty("password")
    @JSONField(serialize = false)
    private String password;

    /**
     * 状态
     */
    @JsonProperty("status")
    private int status = 1;

    /**
     * 是否被删除，1删除 0未删除
     */
    @JsonIgnore
    @TableLogic
    @JsonProperty("isDeleted")
    private int isDeleted = 0;

    @TableField(fill = FieldFill.INSERT)
    @JsonProperty("createTime")
    private LocalDateTime createTime;

    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonProperty("updateTime")
    private LocalDateTime updateTime;

    /**
     * 权限信息，方便前端获取登录用户权限
     * TableField(exist = false)  查询数据库时不查询该字段，设置该字段在数据库表中不存在
     */
    @TableField(exist = false)
    @JsonProperty("permissions")
    private List<String> permissions;

    /**
     * 用户的角色信息
     * TableField(exist = false)  查询数据库时不查询该字段，设置该字段在数据库表中不存在
     */
    @TableField(exist = false)
    @JsonProperty("roles")
    private List<String> roles = new ArrayList<>();
}
